<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 6.1.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"chenmenghui.gitee.io","root":"/","scheme":"Gemini","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":false,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
<meta property="og:type" content="website">
<meta property="og:title" content="陈孟辉的学习笔记">
<meta property="og:url" content="https://chenmenghui.gitee.io/page/16/index.html">
<meta property="og:site_name" content="陈孟辉的学习笔记">
<meta property="og:description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="陈孟辉">
<meta property="article:tag" content="开发菜鸟 陈孟辉">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://chenmenghui.gitee.io/page/16/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : true,
    isPost : false,
    lang   : 'zh-CN'
  };
</script>

  <title>陈孟辉的学习笔记</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/rss2.xml" title="陈孟辉的学习笔记" type="application/rss+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">陈孟辉的学习笔记</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">加油吧骚年</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
        <li class="menu-item menu-item-about">

    <a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>

  </li>
        <li class="menu-item menu-item-rss">

    <a href="/rss2.xml" rel="section"><i class="fa fa-rss fa-fw"></i>RSS</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content index posts-expand">
            
      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/41243.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/41243.html" class="post-title-link" itemprop="url">小程序错误码</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-26 00:00:00" itemprop="dateCreated datePublished" datetime="2018-09-26T00:00:00+08:00">2018-09-26</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E5%B0%8F%E7%A8%8B%E5%BA%8F/" itemprop="url" rel="index"><span itemprop="name">小程序</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/41243.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/41243.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>886</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <table>
<thead>
<tr>
<th>状态码（场景值）</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>-1</td>
<td>系统繁忙</td>
</tr>
<tr>
<td>0</td>
<td>请求成功</td>
</tr>
<tr>
<td>40001</td>
<td>验证失败</td>
</tr>
<tr>
<td>40002</td>
<td>不合法的凭证类型</td>
</tr>
<tr>
<td>40003</td>
<td>不合法的OpenID</td>
</tr>
<tr>
<td>40004</td>
<td>不合法的媒体文件类型</td>
</tr>
<tr>
<td>40005</td>
<td>不合法的文件类型</td>
</tr>
<tr>
<td>40006</td>
<td>不合法的文件大小</td>
</tr>
<tr>
<td>40007</td>
<td>不合法的媒体文件id</td>
</tr>
<tr>
<td>40008</td>
<td>不合法的消息类型</td>
</tr>
<tr>
<td>40009</td>
<td>不合法的图片文件大小</td>
</tr>
<tr>
<td>40010</td>
<td>不合法的语音文件大小</td>
</tr>
<tr>
<td>40011</td>
<td>不合法的视频文件大小</td>
</tr>
<tr>
<td>40012</td>
<td>不合法的缩略图文件大小</td>
</tr>
<tr>
<td>40013</td>
<td>不合法的APPID</td>
</tr>
<tr>
<td>40014</td>
<td>不合法的access_token</td>
</tr>
<tr>
<td>40014</td>
<td>不合法的access_token</td>
</tr>
<tr>
<td>40015</td>
<td>不合法的菜单类型</td>
</tr>
<tr>
<td>40016</td>
<td>不合法的按钮个数</td>
</tr>
<tr>
<td>40017</td>
<td>不合法的按钮个数</td>
</tr>
<tr>
<td>40018</td>
<td>不合法的按钮名字长度</td>
</tr>
<tr>
<td>40019</td>
<td>不合法的按钮KEY长度</td>
</tr>
<tr>
<td>40020</td>
<td>不合法的按钮URL长度</td>
</tr>
<tr>
<td>40021</td>
<td>不合法的菜单版本号</td>
</tr>
<tr>
<td>40022</td>
<td>不合法的子菜单级数</td>
</tr>
<tr>
<td>40023</td>
<td>不合法的子菜单按钮个数</td>
</tr>
<tr>
<td>40024</td>
<td>不合法的子菜单按钮类型</td>
</tr>
<tr>
<td>40025</td>
<td>不合法的子菜单按钮名字长度</td>
</tr>
<tr>
<td>40026</td>
<td>不合法的子菜单按钮KEY长度</td>
</tr>
<tr>
<td>40027</td>
<td>不合法的子菜单按钮URL长度</td>
</tr>
<tr>
<td>40028</td>
<td>不合法的自定义菜单使用用户</td>
</tr>
<tr>
<td>41001</td>
<td>缺少access_token参数</td>
</tr>
<tr>
<td>41002</td>
<td>缺少appid参数</td>
</tr>
<tr>
<td>41003</td>
<td>缺少refresh_token参数</td>
</tr>
<tr>
<td>41004</td>
<td>缺少secret参数</td>
</tr>
<tr>
<td>41005</td>
<td>缺少多媒体文件数据</td>
</tr>
<tr>
<td>41006</td>
<td>缺少media_id参数</td>
</tr>
<tr>
<td>41007</td>
<td>缺少子菜单数据</td>
</tr>
<tr>
<td>42001</td>
<td>超时</td>
</tr>
<tr>
<td>43001</td>
<td>需要GET请求</td>
</tr>
<tr>
<td>43002</td>
<td>需要POST请求</td>
</tr>
<tr>
<td>43003</td>
<td>需要HTTPS请求</td>
</tr>
<tr>
<td>44001</td>
<td>多媒体文件为空</td>
</tr>
<tr>
<td>44002</td>
<td>的数据包为空</td>
</tr>
<tr>
<td>44003</td>
<td>图文消息内容为空</td>
</tr>
<tr>
<td>45001</td>
<td>多媒体文件大小超过限制</td>
</tr>
<tr>
<td>45002</td>
<td>消息内容超过限制</td>
</tr>
<tr>
<td>45003</td>
<td>标题字段超过限制</td>
</tr>
<tr>
<td>45004</td>
<td>描述字段超过限制</td>
</tr>
<tr>
<td>45005</td>
<td>链接字段超过限制</td>
</tr>
<tr>
<td>45006</td>
<td>图片链接字段超过限制</td>
</tr>
<tr>
<td>45007</td>
<td>语音播放时间超过限制</td>
</tr>
<tr>
<td>45008</td>
<td>图文消息超过限制</td>
</tr>
<tr>
<td>45009</td>
<td>接口调用超过限制</td>
</tr>
<tr>
<td>45010</td>
<td>创建菜单个数超过限制</td>
</tr>
<tr>
<td>46001</td>
<td>不存在媒体数据</td>
</tr>
<tr>
<td>46002</td>
<td>不存在的菜单版本</td>
</tr>
<tr>
<td>46003</td>
<td>不存在的菜单数据</td>
</tr>
<tr>
<td>40029</td>
<td>登录多次导致code重复&#x2F;appid和secret对应不上，不是同一个小程序</td>
</tr>
</tbody></table>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/22465.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/22465.html" class="post-title-link" itemprop="url">使用margin实现居中</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-18 00:00:00" itemprop="dateCreated datePublished" datetime="2018-09-18T00:00:00+08:00">2018-09-18</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:45" itemprop="dateModified" datetime="2022-04-15T13:54:45+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/css/" itemprop="url" rel="index"><span itemprop="name">css</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/22465.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/22465.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>425</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>PC端主要是考虑到可能不兼容flex布局,否则也不会使用这种方式</p>
<figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">    <span class="attribute">background</span>: <span class="number">#FF0000</span>;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">top</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">left</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">bottom</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">margin</span>: auto;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h3 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h3><p>解释下原理:</p>
<p>1.在普通内容流中，margin:auto的效果等同于margin-top:0;margin-bottom:0。</p>
<p>2.position:absolute使绝对定位块跳出了内容流，内容流中的其余部分渲染时绝对定位部分不进行渲染。</p>
<p>3.为块区域设置top: 0; left: 0; bottom: 0; right: 0;将给浏览器重新分配一个边界框，此时该块块将填充其父元素的所有可用空间，所以margin 垂直方向上有了可分配的空间。</p>
<p>4.再设置margin 垂直方向上下为auto，即可实现垂直居中。（注意高度得设置）。<br><a target="_blank" rel="noopener" href="https://blog.csdn.net/linshizhan/article/details/71521140">参考资料</a></p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/32434.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/32434.html" class="post-title-link" itemprop="url">wamp3的安装使用</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-13 10:51:22" itemprop="dateCreated datePublished" datetime="2018-09-13T10:51:22+08:00">2018-09-13</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:45" itemprop="dateModified" datetime="2022-04-15T13:54:45+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">开发环境</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/32434.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/32434.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>458</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="wamp3的安装使用"><a href="#wamp3的安装使用" class="headerlink" title="wamp3的安装使用"></a>wamp3的安装使用</h1><p>刚刚安装使用了wamp3,中间遇到了一些问题</p>
<h3 id="缺少msvcr120-dll文件"><a href="#缺少msvcr120-dll文件" class="headerlink" title="缺少msvcr120.dll文件"></a>缺少msvcr120.dll文件</h3><p>这个百度解决的.就是在360人工服务查找这个问题,然后提示安装了什么工具集就好了.</p>
<h3 id="无法配置默认文件路径"><a href="#无法配置默认文件路径" class="headerlink" title="无法配置默认文件路径"></a>无法配置默认文件路径</h3><p>原来wamp3默认开启了v-host的服务,需在httpd-vhosts.conf文件中修改路径</p>
<h3 id="修改路径后无法访问的问题"><a href="#修改路径后无法访问的问题" class="headerlink" title="修改路径后无法访问的问题"></a>修改路径后无法访问的问题</h3><p>需修改httpd.conf文件</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&lt;Directory /&gt;</span><br><span class="line">    AllowOverride none</span><br><span class="line">    Require all denied</span><br><span class="line">&lt;/Directory&gt;</span><br></pre></td></tr></table></figure>
<p>改成</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&lt;Directory /&gt;</span><br><span class="line">    #AllowOverride none</span><br><span class="line">    #Require all denied</span><br><span class="line">    Options FollowSymLinks</span><br><span class="line">    AllowOverride None</span><br><span class="line">    Order deny,allow</span><br><span class="line">    Deny from all</span><br><span class="line">&lt;/Directory&gt;</span><br></pre></td></tr></table></figure>

<h3 id="总是提示”c-x2F-wamp64-or-PHP-in-PATH”"><a href="#总是提示”c-x2F-wamp64-or-PHP-in-PATH”" class="headerlink" title="总是提示”c:&#x2F;wamp64 or PHP in PATH”"></a>总是提示”c:&#x2F;wamp64 or PHP in PATH”</h3><p>现在的wamp3不提倡使用环境变量.使用环境变量对切换php版本有影响</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/3261.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/3261.html" class="post-title-link" itemprop="url">在自己的服务器上搭建一个git服务器</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-07 00:00:00" itemprop="dateCreated datePublished" datetime="2018-09-07T00:00:00+08:00">2018-09-07</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/git/" itemprop="url" rel="index"><span itemprop="name">git</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/3261.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/3261.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>1.4k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="配置篇"><a href="#配置篇" class="headerlink" title="配置篇"></a>配置篇</h1><h2 id="在服务器上配置git仓库"><a href="#在服务器上配置git仓库" class="headerlink" title="在服务器上配置git仓库"></a>在服务器上配置git仓库</h2><h3 id="安装git-ubuntu-root"><a href="#安装git-ubuntu-root" class="headerlink" title="安装git(ubuntu root)"></a>安装git(ubuntu root)</h3><p>apt install git</p>
<h3 id="创建一个git用户"><a href="#创建一个git用户" class="headerlink" title="创建一个git用户"></a>创建一个git用户</h3><p>adduser git</p>
<h3 id="初始化一个仓库"><a href="#初始化一个仓库" class="headerlink" title="初始化一个仓库"></a>初始化一个仓库</h3><ol>
<li>指定一个目录作为git仓库</li>
<li>git init –bare &#x2F;srv&#x2F;yii.git</li>
<li>chown git:git -R &#x2F;srv&#x2F;yii.git<h3 id="创建证书登录"><a href="#创建证书登录" class="headerlink" title="创建证书登录"></a>创建证书登录</h3></li>
<li>创建&#x2F;home&#x2F;git&#x2F;.ssh&#x2F;authorized_keys(注意:.ssh目录及authorized_key文件是自建的)</li>
<li>收集需要登陆用户的公匙,导入到上个创建的文件中.一个公匙占一行<h2 id="客户端配置git"><a href="#客户端配置git" class="headerlink" title="客户端配置git"></a>客户端配置git</h2><h3 id="安装git命令行"><a href="#安装git命令行" class="headerlink" title="安装git命令行"></a>安装git命令行</h3></li>
</ol>
<ul>
<li>ubuntu<ul>
<li>apt install git</li>
</ul>
</li>
<li>win<ul>
<li><a target="_blank" rel="noopener" href="https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git">安装</a><h3 id="配置git用户数据"><a href="#配置git用户数据" class="headerlink" title="配置git用户数据"></a>配置git用户数据</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">// 用户信息</span><br><span class="line">git config --global user.name &#x27;***&#x27;</span><br><span class="line">git config --global user.email &#x27;***&#x27;</span><br><span class="line">// 生成密匙</span><br><span class="line">ssh-keygen // 注意会提示保存在哪里,一会要到对应的地方找,默认是在对应用户目录下的.ssh/里</span><br></pre></td></tr></table></figure>
<h3 id="把用户信息导至服务器"><a href="#把用户信息导至服务器" class="headerlink" title="把用户信息导至服务器"></a>把用户信息导至服务器</h3>把公匙信息复制到服务器的&#x2F;home&#x2F;git&#x2F;.ssh&#x2F;authorized_keys中<br>值得注意的是，公匙是可以在多个git服务器中使用的。自己的github仓库、自建服务器git仓库及公司代码gitlab仓库就是使用的是同一个公匙。<h1 id="使用篇"><a href="#使用篇" class="headerlink" title="使用篇"></a>使用篇</h1><h2 id="服务器"><a href="#服务器" class="headerlink" title="服务器"></a>服务器</h2>服务器不能直接查看用户所提交的数据,需要使用git clone [对应仓库目录]把数据提取到当前目录(pwd所在地)<h2 id="客户端"><a href="#客户端" class="headerlink" title="客户端"></a>客户端</h2></li>
</ul>
</li>
</ul>
<ol>
<li>git clone <a href="mailto:&#x67;&#105;&#116;&#x40;&#52;&#x37;&#x2e;&#x31;&#x30;&#x34;&#x2e;&#x31;&#56;&#57;&#x2e;&#x36;&#56;">&#x67;&#105;&#116;&#x40;&#52;&#x37;&#x2e;&#x31;&#x30;&#x34;&#x2e;&#x31;&#56;&#57;&#x2e;&#x36;&#56;</a>:&#x2F;srv&#x2F;yii.git (如果没有加入公匙,也可使用git用户对应的密码)</li>
<li>填写数据</li>
<li>git add -all <a target="_blank" rel="noopener" href="https://www.cnblogs.com/skura23/p/5859243.html">add</a> 把新创建的文件提交到暂缓区</li>
<li>git commit -am ‘注释’ 把修改内容保存到缓存区并提交至<strong>本地仓库</strong></li>
<li>git push origin master 把本地仓库提交至服务器</li>
<li>git pull origin master 把服务器内容拉取下来</li>
</ol>
<h1 id="注意篇"><a href="#注意篇" class="headerlink" title="注意篇"></a>注意篇</h1><h2 id="如果发生冲突"><a href="#如果发生冲突" class="headerlink" title="如果发生冲突"></a>如果发生冲突</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">// 和线上代码保持一致,也就是放弃上一次push之前的所有修改</span><br><span class="line">git fetch -all</span><br><span class="line">git reset --hard</span><br></pre></td></tr></table></figure>
<h2 id="git-clone-提示端口不对"><a href="#git-clone-提示端口不对" class="headerlink" title="git clone 提示端口不对"></a>git clone 提示端口不对</h2><p>可能原因</p>
<ol>
<li>服务器没有安装openssh_server(我被这个折腾了快一个小时)</li>
<li>防火墙拦截(一般不会,默认是22端口)</li>
</ol>
<h2 id="To-squelch-this-message-and-still-keep-the-default-behaviour-set-remote-error-‘receive-denyCurrentBranch’-configuration-variable-to-‘refuse’"><a href="#To-squelch-this-message-and-still-keep-the-default-behaviour-set-remote-error-‘receive-denyCurrentBranch’-configuration-variable-to-‘refuse’" class="headerlink" title="To squelch this message and still keep the default behaviour, set remote: error: ‘receive.denyCurrentBranch’ configuration variable to ‘refuse’."></a>To squelch this message and still keep the default behaviour, set remote: error: ‘receive.denyCurrentBranch’ configuration variable to ‘refuse’.</h2><p>出现这个错误是因为在服务器端错误的使用了git init &#x2F;srv&#x2F;advanced<br>注意,远程仓库初始化需要 <code>ogit init --bare  /srv/advanced</code><br>–bare 创建裸仓库.用于记录版本库历史记录的.git目录下面的文件;而不会包含实际项目源文件的拷贝;所以该版本库不能称为工作目录(working tree);</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/49937.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/49937.html" class="post-title-link" itemprop="url">WAMP的一些基本配置</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-06 19:50:59" itemprop="dateCreated datePublished" datetime="2018-09-06T19:50:59+08:00">2018-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:45" itemprop="dateModified" datetime="2022-04-15T13:54:45+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/" itemprop="url" rel="index"><span itemprop="name">开发环境</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/49937.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/49937.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>2k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>2 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="环境变量的配置"><a href="#环境变量的配置" class="headerlink" title="环境变量的配置"></a>环境变量的配置</h1><p>把 C:\wamp64\bin\php\php5.6.31;C:\wamp64\bin\mysql\mysql5.7.19\bin 写进环境变量中即可.注意自己安装wamp的位置及各自后面的版本号</p>
<h1 id="服务器设置"><a href="#服务器设置" class="headerlink" title="服务器设置"></a>服务器设置</h1><p>在wamp&#x2F;bin&#x2F;apache&#x2F;Apache###&#x2F;conf&#x2F;httpd.conf文件中设置</p>
<h1 id="根文件夹"><a href="#根文件夹" class="headerlink" title="根文件夹"></a>根文件夹</h1><p>修改documentroot和directory两项<br>保存后重启服务</p>
<h1 id="404返回值"><a href="#404返回值" class="headerlink" title="404返回值"></a>404返回值</h1><p>修改errordocument其后的值并删除前面的#<br>保存后重启服务<br>更改端口<br>修改或增加listen<br>保存后重启服务<br>注意格式，否则重启不了</p>
<h1 id="设置外部访问"><a href="#设置外部访问" class="headerlink" title="设置外部访问"></a>设置外部访问</h1><p>1.更改为一下内容（有两部分）</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">&lt;Directory &quot;E:/wamp/bin/apache/apache2.4.9/cgi-bin&quot;&gt;</span><br><span class="line">    AllowOverride None</span><br><span class="line">    Options None</span><br><span class="line">    Require all granted</span><br><span class="line">&lt;/Directory&gt;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">#   onlineoffline tag - don&#x27;t remove</span><br><span class="line">    Require all granted</span><br><span class="line">	allow from all</span><br><span class="line">	</span><br><span class="line">&lt;/Directory&gt;</span><br></pre></td></tr></table></figure>

<h1 id="设置localhost默认显示页面"><a href="#设置localhost默认显示页面" class="headerlink" title="设置localhost默认显示页面"></a>设置localhost默认显示页面</h1><p>1.更改以下内容</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&lt;IfModule dir_module&gt;</span><br><span class="line">    DirectoryIndex index.php index.php3 index.html index.htm</span><br><span class="line">&lt;/IfModule&gt;</span><br></pre></td></tr></table></figure>
<p>2.如果localhost文件夹中没有上面所包含的页面，地址栏输入localhost将显示localhost文件夹内的文件</p>
<h1 id="取消php函数未定义之类的报错"><a href="#取消php函数未定义之类的报错" class="headerlink" title="取消php函数未定义之类的报错"></a>取消php函数未定义之类的报错</h1><p>在 php.ini 中设置<br>error_reporting &#x3D; E_ALL &amp; ~E_NOTICE<br>其中<br>&amp;：和<br>~：非</p>
<h2 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h2><p>其他错误类型可以问度娘后根据需要利用逻辑判断进行取舍</p>
<h1 id="修改MySQL默认编码格式"><a href="#修改MySQL默认编码格式" class="headerlink" title="修改MySQL默认编码格式"></a>修改MySQL默认编码格式</h1><p>在my.ini中添加<br>[mysql]添加配置default-character-set&#x3D;utf8<br>[mysqld]添加配置character_set_server&#x3D;utf8</p>
<h1 id="修改post上传文件大小"><a href="#修改post上传文件大小" class="headerlink" title="修改post上传文件大小"></a>修改post上传文件大小</h1><p>在 php.ini 中设置，搜索post后自行寻找……<br>修改服务器时间<br>php.ini文件里的 date.timezone &#x3D; prc(中国时区)</p>
<h1 id="建立第二站点"><a href="#建立第二站点" class="headerlink" title="建立第二站点"></a>建立第二站点</h1><p>打开C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf<br>去掉”Include conf&#x2F;extra&#x2F;httpd-vhosts.conf”的注释<br>去掉”LoadModule rewrite_module modules&#x2F;mod_rewrite.so”的注释<br>httpd.conf文件修改，</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">AllowOverride all</span><br><span class="line">Require all granted</span><br><span class="line">allow from all</span><br></pre></td></tr></table></figure>
<p>打开C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf,添加</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&lt;VirtualHost *:80&gt;</span><br><span class="line">    ServerName blog</span><br><span class="line">    DocumentRoot &quot;E:/blog&quot;</span><br><span class="line">    &lt;Directory &quot;E:/blog&quot;&gt;</span><br><span class="line">    Options Indexes FollowSymLinks</span><br><span class="line">    AllowOverride all</span><br><span class="line">    Order Allow,Deny</span><br><span class="line">    Allow from all</span><br><span class="line">    &lt;/Directory&gt;</span><br><span class="line">&lt;/VirtualHost&gt;</span><br></pre></td></tr></table></figure>
<p>hosts 文件添加<br>文件位置：C:\Windows\System32\drivers\etc<br>127.0.0.1      blog</p>
<h2 id="注意："><a href="#注意：" class="headerlink" title="注意："></a>注意：</h2><ol>
<li><p>Options Indexes FollowSymLinks 如果没有，则禁止 Apache 显示该目录结构，那样就不会从浏览器看到该目录下的文件和子目录列表了（不过，服务器有默认优先打开index.html等文件的设置，如果有了此设置且当前目录下有index.html等文件，依旧无法打开此目录）。</p>
</li>
<li><p>第一次输入第二站点时，需要在地址前面带上http:&#x2F;&#x2F;(不知道为什么)</p>
</li>
<li><p>如果开启了第二或者更多的站点,第一个就是localhost能够访问的.这个是由如果还需要启用外部访问,记得要在第一个站点配置加上Allow from all(把上面的改下路径直接覆盖第一个就好了)</p>
</li>
<li><p>如果想使用其他端口（如88）作为登陆，则直接在此文件中加上* Listen:88 <em>，并把对应的配置项改成</em> &lt;VirtualHost *:88&gt; *</p>
</li>
<li><p>在阿里云上配置其他端口时，除了要配置防火墙，还要注意策略组</p>
</li>
</ol>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/62015.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/62015.html" class="post-title-link" itemprop="url">WdatePicker设置最大最小日期</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-06 19:50:59" itemprop="dateCreated datePublished" datetime="2018-09-06T19:50:59+08:00">2018-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:45" itemprop="dateModified" datetime="2022-04-15T13:54:45+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/js/" itemprop="url" rel="index"><span itemprop="name">js</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/62015.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/62015.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>282</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="WdatePicker设置最大最小日期"><a href="#WdatePicker设置最大最小日期" class="headerlink" title="WdatePicker设置最大最小日期"></a>WdatePicker设置最大最小日期</h1><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">onclick=<span class="string">&quot;WdatePicker(&#123;maxDate:&#x27;#F&#123;$dp.$D(\&#x27;endTime\&#x27;)||\&#x27;new Date()\&#x27;&#125;&#x27;&#125;)&quot;</span></span><br><span class="line">onclick=<span class="string">&quot;WdatePicker(&#123;minDate:&#x27;#F&#123;$dp.$D(\&#x27;startTime\&#x27;)&#125;&#x27;,maxDate:new Date()&#125;)&quot;</span></span><br></pre></td></tr></table></figure>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/24109.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/24109.html" class="post-title-link" itemprop="url">开发中遇到mysql的一些零碎的基础知识</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-06 19:45:55" itemprop="dateCreated datePublished" datetime="2018-09-06T19:45:55+08:00">2018-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/mysql/" itemprop="url" rel="index"><span itemprop="name">mysql</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/24109.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/24109.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>5.5k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>5 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h3 id="mysql一行信息中匹配特定的数据"><a href="#mysql一行信息中匹配特定的数据" class="headerlink" title="mysql一行信息中匹配特定的数据"></a>mysql一行信息中匹配特定的数据</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span> <span class="keyword">FROM</span> <span class="keyword">user</span> <span class="keyword">WHERE</span> nick_name REGEXP <span class="string">&#x27;[[:&lt;:]]不觉风止[[:&gt;:]]&#x27;</span>;</span><br></pre></td></tr></table></figure>
<p>如果是类似”1,2,3,4”这种,不用正则也可以</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span> <span class="keyword">FROM</span> <span class="keyword">user</span> <span class="keyword">WHERE</span> find_in_set(nick_name, <span class="string">&#x27;不觉风止&#x27;</span>);</span><br></pre></td></tr></table></figure>
<p>用like就太繁琐了,需要考虑多种情况</p>
<h3 id="mysql中join之后的on"><a href="#mysql中join之后的on" class="headerlink" title="mysql中join之后的on"></a>mysql中join之后的on</h3><p>看一个sql语句</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span></span><br><span class="line">  n.cat_id,</span><br><span class="line">  c.cat_id</span><br><span class="line"><span class="keyword">FROM</span> site_news n <span class="keyword">LEFT</span> <span class="keyword">JOIN</span> site_news_category c</span><br><span class="line">    <span class="keyword">ON</span> n.cat_id <span class="operator">=</span> <span class="number">1</span></span><br></pre></td></tr></table></figure>
<p>他的结果集居然是site_news的所有的记录。</p>
<p>把sql语句改成这个样子</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span></span><br><span class="line">  n.cat_id,</span><br><span class="line">  c.cat_id</span><br><span class="line"><span class="keyword">FROM</span> site_news n <span class="keyword">LEFT</span> <span class="keyword">JOIN</span> site_news_category c</span><br><span class="line">    <span class="keyword">ON</span> n.cat_id <span class="operator">=</span> c.cat_id</span><br><span class="line"><span class="keyword">WHERE</span> c.cat_id <span class="operator">=</span> <span class="number">21</span>;</span><br></pre></td></tr></table></figure>
<p>其结果就符合预期了.</p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_33864656/article/details/77838258">百度之后,看到这样的结论</a></p>
<blockquote>
<p>假如是左连接的话，如果左边表的某条记录不符合连接条件，那么它不进行连接，但是仍然留在结果集中（此时右边部分的连接结果为NULL）</p>
</blockquote>
<p>才知道困惑我的原因竟在于此</p>
<p>原来,on只是作为两个表的链接条件而使用的.具体的筛选,还需要使用where处理</p>
<h3 id="mysql中的on、where、having之间的区别"><a href="#mysql中的on、where、having之间的区别" class="headerlink" title="mysql中的on、where、having之间的区别"></a>mysql中的on、where、having之间的区别</h3><p>在select语句中，这三者筛选是有时序的。on最先，where次之，having最后。</p>
<p>在通过两张及两张以上的表链接来返回记录时，首先会产生一个中间的临时表。on是产生临时表所需要的条件。同时，记住上述所说的话。</p>
<p>之后where是在这张临时表的基础之上起作用的。另外where的条件是数据表中原有的字段。</p>
<p>然后就是having在where之后的基础起作用。having对聚合函数及as产生的别名有效</p>
<h3 id="mysql把搜索到的内容展示成一行"><a href="#mysql把搜索到的内容展示成一行" class="headerlink" title="mysql把搜索到的内容展示成一行"></a>mysql把搜索到的内容展示成一行</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> group_concat(key) <span class="keyword">FROM</span> config <span class="keyword">WHERE</span> <span class="keyword">group</span> <span class="operator">=</span> <span class="string">&#x27;points&#x27;</span>;</span><br></pre></td></tr></table></figure>

<h3 id="UPDATE把一个表中的字段与另一个表的字段对应上"><a href="#UPDATE把一个表中的字段与另一个表的字段对应上" class="headerlink" title="UPDATE把一个表中的字段与另一个表的字段对应上"></a>UPDATE把一个表中的字段与另一个表的字段对应上</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">update</span> store_reply s, base_user c</span><br><span class="line"><span class="keyword">set</span> s.head_img_url <span class="operator">=</span> c.head_img_url</span><br><span class="line"><span class="keyword">where</span> s.user_id <span class="operator">=</span> c.id;</span><br></pre></td></tr></table></figure>

<h3 id="INSERT另外一个表的数据"><a href="#INSERT另外一个表的数据" class="headerlink" title="INSERT另外一个表的数据"></a>INSERT另外一个表的数据</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">INSERT</span> <span class="keyword">INTO</span> favorite_num (rid, favorite_num)</span><br><span class="line">  <span class="keyword">SELECT</span></span><br><span class="line">    rid,</span><br><span class="line">    <span class="built_in">count</span>(id)</span><br><span class="line">  <span class="keyword">FROM</span> store_favorite</span><br><span class="line">  <span class="keyword">GROUP</span> <span class="keyword">BY</span> rid;</span><br></pre></td></tr></table></figure>

<p>两个表的字段顺序对应上就可以了</p>
<h3 id="mysql5-7-mysql5-7默认开启了ONLY-FULL-GROUP-BY-有时需要将其关闭"><a href="#mysql5-7-mysql5-7默认开启了ONLY-FULL-GROUP-BY-有时需要将其关闭" class="headerlink" title="mysql5.7 mysql5.7默认开启了ONLY_FULL_GROUP_BY,有时需要将其关闭"></a>mysql5.7 mysql5.7默认开启了ONLY_FULL_GROUP_BY,有时需要将其关闭</h3><p>SET SESSION sql_mode &#x3D; ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ‘;</p>
<h3 id="比较两个表中的数据是否一致"><a href="#比较两个表中的数据是否一致" class="headerlink" title="比较两个表中的数据是否一致"></a>比较两个表中的数据是否一致</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> id,title</span><br><span class="line"><span class="keyword">FROM</span> (</span><br><span class="line">       <span class="keyword">SELECT</span> id,title</span><br><span class="line">       <span class="keyword">FROM</span> text1</span><br><span class="line">       <span class="keyword">UNION</span> <span class="keyword">ALL</span></span><br><span class="line">       <span class="keyword">SELECT</span> id,title</span><br><span class="line">       <span class="keyword">FROM</span> text2</span><br><span class="line">     ) tb1</span><br><span class="line"><span class="keyword">GROUP</span> <span class="keyword">BY</span> id,title</span><br><span class="line"><span class="keyword">HAVING</span> <span class="built_in">count</span>(<span class="operator">*</span>) <span class="operator">=</span> <span class="number">1</span></span><br><span class="line"><span class="keyword">ORDER</span> <span class="keyword">BY</span> id, title</span><br></pre></td></tr></table></figure>

<h3 id="通过另一个表的数据更新当前表"><a href="#通过另一个表的数据更新当前表" class="headerlink" title="通过另一个表的数据更新当前表"></a>通过另一个表的数据更新当前表</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">UPDATE</span> vip_dynamic_reward_record record, vip_member <span class="keyword">member</span></span><br><span class="line"><span class="keyword">SET</span> record.market <span class="operator">=</span> member.market</span><br><span class="line"><span class="keyword">WHERE</span> record.member_child_id <span class="operator">=</span> member.id;</span><br></pre></td></tr></table></figure>
<p>或者子句的模式</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">UPDATE</span> vip_dynamic_reward_record</span><br><span class="line"><span class="keyword">SET</span> market <span class="operator">=</span> (<span class="keyword">SELECT</span> market <span class="keyword">FROM</span> vip_member <span class="keyword">WHERE</span> vip_dynamic_reward_record.member_child_id <span class="operator">=</span> vip_member.id);</span><br><span class="line"></span><br><span class="line"><span class="keyword">UPDATE</span> <span class="keyword">user</span></span><br><span class="line"><span class="keyword">SET</span> average_score <span class="operator">=</span> (<span class="keyword">SELECT</span> <span class="built_in">avg</span>(score) <span class="keyword">FROM</span> score <span class="keyword">WHERE</span> user_id <span class="operator">=</span> user.id);</span><br><span class="line"></span><br><span class="line"><span class="keyword">UPDATE</span> vip_member</span><br><span class="line"><span class="keyword">SET</span> dynamic_reward <span class="operator">=</span> (<span class="keyword">SELECT</span> ifnull(<span class="built_in">sum</span>(times <span class="operator">*</span> least(left_dynamic_reward, right_dynamic_reward) <span class="operator">*</span> <span class="number">2</span> <span class="operator">*</span> <span class="number">0.03</span> <span class="operator">*</span> <span class="number">0.95</span>), <span class="number">0</span>)</span><br><span class="line">                      <span class="keyword">FROM</span> vip_dynamic_reward</span><br><span class="line">                      <span class="keyword">WHERE</span> vip_member.id <span class="operator">=</span> vip_dynamic_reward.member_id);</span><br></pre></td></tr></table></figure>
<p>令我奇怪的是,这里的set之后居然没有where限定条件也能正常运行</p>
<h3 id="创建一个临时表并把另一个表的数据插入进去"><a href="#创建一个临时表并把另一个表的数据插入进去" class="headerlink" title="创建一个临时表并把另一个表的数据插入进去"></a>创建一个临时表并把另一个表的数据插入进去</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">CREATE</span> TEMPORARY <span class="keyword">TABLE</span> IF <span class="keyword">NOT</span> <span class="keyword">EXISTS</span> record1</span><br><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span> <span class="keyword">FROM</span> vip_dynamic_reward_record;</span><br></pre></td></tr></table></figure>

<p>原来如此,创建表的时候不一定需要先定义字段再插入数据,可以直接把一个子表的内容插进去的.</p>
<h3 id="mysql中获取一列数据中几栏里的最小值"><a href="#mysql中获取一列数据中几栏里的最小值" class="headerlink" title="mysql中获取一列数据中几栏里的最小值"></a>mysql中获取一列数据中几栏里的最小值</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> `member_id`,least(<span class="built_in">sum</span>(`left_dynamic_reward`), <span class="built_in">sum</span>(`right_dynamic_reward`))<span class="operator">*</span><span class="number">2</span><span class="operator">*</span><span class="number">0.03</span><span class="operator">*</span><span class="number">0.95</span> `dynamic_reward`</span><br><span class="line"><span class="keyword">FROM</span> `vip_dynamic_reward`</span><br><span class="line"><span class="keyword">WHERE</span> `times` <span class="operator">&lt;</span> <span class="number">25</span></span><br><span class="line"><span class="keyword">GROUP</span> <span class="keyword">BY</span> `member_id`</span><br></pre></td></tr></table></figure>

<h3 id="MySQL中的if"><a href="#MySQL中的if" class="headerlink" title="MySQL中的if"></a>MySQL中的if</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- IF(expr1,expr2,expr3)</span></span><br><span class="line"><span class="keyword">SELECT</span> if (<span class="literal">true</span>, <span class="number">1</span>, <span class="number">0</span>);</span><br></pre></td></tr></table></figure>

<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- IFNULL(expr1,expr2)</span></span><br><span class="line"><span class="keyword">SELECT</span> ifnull(<span class="keyword">null</span>, <span class="number">1</span>);</span><br></pre></td></tr></table></figure>

<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> <span class="keyword">CASE</span> sex</span><br><span class="line"><span class="keyword">WHEN</span> <span class="number">1</span> <span class="keyword">THEN</span> <span class="string">&#x27;男&#x27;</span> </span><br><span class="line">    <span class="keyword">ELSE</span> <span class="string">&#x27;女&#x27;</span> </span><br><span class="line"><span class="keyword">END</span></span><br><span class="line"><span class="keyword">FROM</span> test;</span><br></pre></td></tr></table></figure>

<h3 id="mysql中的时间"><a href="#mysql中的时间" class="headerlink" title="mysql中的时间"></a>mysql中的时间</h3><ul>
<li>DATE_FORMAT() 函数用于以不同的格式显示日期&#x2F;时间数据。</li>
<li>MySQL 格式化函数 FROM_UNIXTIME()</li>
</ul>
<p>具体内容参考链接<br><a target="_blank" rel="noopener" href="https://www.cnblogs.com/dest/p/4205371.html">mysql格式化日期</a></p>
<h3 id="删除表记录后重新设置自增索引值"><a href="#删除表记录后重新设置自增索引值" class="headerlink" title="删除表记录后重新设置自增索引值"></a>删除表记录后重新设置自增索引值</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER</span> <span class="keyword">TABLE</span> `system_menu`</span><br><span class="line">    AUTO_INCREMENT <span class="operator">=</span> <span class="number">60</span>;</span><br></pre></td></tr></table></figure>

<h3 id="Insert-ignore-into"><a href="#Insert-ignore-into" class="headerlink" title="Insert ignore into"></a>Insert ignore into</h3><p><a target="_blank" rel="noopener" href="http://www.mysqltutorial.org/mysql-insert-ignore/">MySQL INSERT IGNORE Statement</a></p>
<p>insert ignore into 指的是插入时忽略错误信息。<br>比如，如果没有「ignore」，一条包含多个数据的插入语句会在报错（如重复索引）后直接退出执行；而有「ignore」，则会忽略报错继续执行其他可执行的部分。</p>
<h3 id="on-duplicate-key-update"><a href="#on-duplicate-key-update" class="headerlink" title="on duplicate key update"></a>on duplicate key update</h3><p>这个就牛逼了，实现了有则更新，无则添加的功能</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">INSERT</span> <span class="keyword">INTO</span> daily_hit_count(<span class="keyword">day</span>, slot, cnt)</span><br><span class="line"><span class="keyword">VALUES</span> (<span class="built_in">current_date</span>,</span><br><span class="line">        <span class="built_in">floor</span>(rand() <span class="operator">*</span> <span class="number">10</span>),</span><br><span class="line">        <span class="number">1</span>)</span><br><span class="line"><span class="keyword">ON</span> DUPLICATE KEY <span class="keyword">UPDATE</span> cnt <span class="operator">=</span>cnt <span class="operator">+</span> <span class="number">1</span>;</span><br></pre></td></tr></table></figure>

<h3 id="自定义排序"><a href="#自定义排序" class="headerlink" title="自定义排序"></a>自定义排序</h3><p>之前遇到排序结果是需要自定义的，现在有一个思路</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> `key`,<span class="keyword">CASE</span> `key` <span class="keyword">WHEN</span> <span class="string">&#x27;B&#x27;</span> <span class="keyword">THEN</span> <span class="number">1</span> <span class="keyword">WHEN</span> <span class="string">&#x27;A&#x27;</span> <span class="keyword">THEN</span> <span class="number">2</span> <span class="keyword">WHEN</span> <span class="string">&#x27;C&#x27;</span> <span class="keyword">THEN</span> <span class="number">4</span> <span class="keyword">WHEN</span> <span class="string">&#x27;D&#x27;</span> <span class="keyword">THEN</span> <span class="number">3</span> <span class="keyword">ELSE</span> <span class="keyword">NULL</span> <span class="keyword">END</span> <span class="keyword">AS</span> new_sort</span><br><span class="line"><span class="keyword">FROM</span> Greatests</span><br><span class="line"><span class="keyword">ORDER</span> <span class="keyword">BY</span> new_sort;</span><br></pre></td></tr></table></figure>

<h3 id="「-x3D-」和「-x3D-」的区别"><a href="#「-x3D-」和「-x3D-」的区别" class="headerlink" title="「&#x3D;」和「:&#x3D;」的区别"></a>「&#x3D;」和「:&#x3D;」的区别</h3><ul>
<li>「&#x3D;」只有在update或set中才是赋值，其他地方是判断。而判断的结果是1或2</li>
<li>「:&#x3D;」只有赋值</li>
</ul>
<h3 id="UPDATE操作是有顺序的"><a href="#UPDATE操作是有顺序的" class="headerlink" title="UPDATE操作是有顺序的"></a>UPDATE操作是有顺序的</h3><p>第一次见到没有看懂，记下来吧。</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">DROP</span> <span class="keyword">TABLE</span> IF <span class="keyword">EXISTS</span> test;</span><br><span class="line"><span class="keyword">CREATE</span> <span class="keyword">TABLE</span> IF <span class="keyword">NOT</span> <span class="keyword">EXISTS</span> test</span><br><span class="line">(</span><br><span class="line">    id    <span class="type">int</span> <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">PRIMARY</span> KEY AUTO_INCREMENT,</span><br><span class="line">    <span class="keyword">start</span> <span class="type">int</span> <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="number">0</span>,</span><br><span class="line">    <span class="keyword">end</span>   <span class="type">INT</span> <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="number">0</span></span><br><span class="line">) CHARSET utf8</span><br><span class="line">  ENGINE innodb;</span><br><span class="line"></span><br><span class="line"><span class="keyword">INSERT</span> <span class="keyword">INTO</span> test (<span class="keyword">start</span>)</span><br><span class="line"><span class="keyword">VALUES</span> (<span class="number">1</span>),</span><br><span class="line">       (<span class="number">2</span>),</span><br><span class="line">       (<span class="number">3</span>),</span><br><span class="line">       (<span class="number">4</span>),</span><br><span class="line">       (<span class="number">5</span>),</span><br><span class="line">       (<span class="number">6</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span></span><br><span class="line"><span class="keyword">FROM</span> test;</span><br><span class="line"></span><br><span class="line"><span class="keyword">SET</span> <span class="variable">@new</span>_num <span class="operator">=</span> <span class="number">10</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">UPDATE</span> test</span><br><span class="line"><span class="keyword">SET</span> <span class="keyword">end</span>   <span class="operator">=</span> <span class="variable">@new</span>_num,</span><br><span class="line">    <span class="keyword">start</span> <span class="operator">=</span> (<span class="variable">@new</span>_num :<span class="operator">=</span> <span class="keyword">start</span>) #<span class="number">1</span></span><br><span class="line"><span class="keyword">ORDER</span> <span class="keyword">BY</span> id <span class="keyword">DESC</span>;</span><br></pre></td></tr></table></figure>

<p>注意#1的地方。</p>
<p>这几天看那本SQL进阶，因为其中反复强调SQL是无序集合，所以产生了个误区，总感觉update操作时同时进行的。从这个可以看出结果，还是有顺序的，甚而还会受到order by的影响。</p>
<p>其实想想也是，数据表本身就是按一定顺序排列的「文本」结构，怎么可能会没有顺序呢。不仅仅是update，其他操作也是有顺序的。就比如之前常见的排列序号，如果没有顺序，是不可能实现的。</p>
<h3 id="SQL-CALC-FOUND-ROWS"><a href="#SQL-CALC-FOUND-ROWS" class="headerlink" title="SQL_CALC_FOUND_ROWS"></a>SQL_CALC_FOUND_ROWS</h3><p>在经常使用的分页查询中，经常是「select count（*） from 子句」和「子句」这般查两次。使用该函数，就无须这样的操作了。在处理复杂的「子句」时，大大提高了效率。</p>
<h3 id="通过SQL查看表所包含的字段"><a href="#通过SQL查看表所包含的字段" class="headerlink" title="通过SQL查看表所包含的字段"></a>通过SQL查看表所包含的字段</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> COLUMN_NAME</span><br><span class="line"><span class="keyword">FROM</span> information_schema.COLUMNS</span><br><span class="line"><span class="keyword">WHERE</span> TABLE_SCHEMA <span class="operator">=</span> <span class="string">&#x27;库名&#x27;</span></span><br><span class="line">  <span class="keyword">AND</span> TABLE_NAME <span class="operator">=</span> <span class="string">&#x27;表名&#x27;</span>;</span><br></pre></td></tr></table></figure>

<h3 id="查询结果按-非零非null、非null、null-进行排序"><a href="#查询结果按-非零非null、非null、null-进行排序" class="headerlink" title="查询结果按 非零非null、非null、null 进行排序"></a>查询结果按 非零非null、非null、null 进行排序</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span></span><br><span class="line"><span class="keyword">FROM</span> test</span><br><span class="line"><span class="keyword">ORDER</span> <span class="keyword">BY</span> ISNULL(<span class="keyword">end</span>), <span class="keyword">NOT</span> (<span class="keyword">end</span>), <span class="keyword">end</span>;</span><br></pre></td></tr></table></figure>

<p>isnull 值为null，结果为1；值为非null，结果为0。排序结果就会把所有的非null放在前面</p>
<p>not 值为null，结果为null；值为0，结果为1；值为非null非0，结果为0</p>
<p>所以，排序结果就是按 非零非null、非null、null 排序</p>
<h3 id="创建字段时默认值（5-7）"><a href="#创建字段时默认值（5-7）" class="headerlink" title="创建字段时默认值（5.7）"></a>创建字段时默认值（5.7）</h3><p>和之前的版本有些区别。比如</p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_34112030/article/details/92068637">datetime 不能使用「0000-00-00 00:00:00」</a></p>
<p>text 等格式不能有默认值</p>
<p>这些也都是可以通过配置项处理。但也没有必要。</p>
<h3 id="查看表的创建时间"><a href="#查看表的创建时间" class="headerlink" title="查看表的创建时间"></a>查看表的创建时间</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">SELECT CREATE_TIME</span><br><span class="line">FROM information_schema.TABLES</span><br><span class="line">WHERE TABLE_SCHEMA = &#x27;tkchina&#x27;</span><br><span class="line">  AND TABLE_NAME = &#x27;actionlog&#x27;;</span><br></pre></td></tr></table></figure>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/88342863">information_schema 中的表</a>：</p>
<ul>
<li>CHARACTER_SETS</li>
<li>COLLATIONS</li>
<li>COLLATION_CHARACTER_SET_APPLICABILITY</li>
<li>COLUMNS</li>
<li>COLUMN_PRIVILEGES</li>
<li>ENGINES</li>
<li>EVENTS</li>
<li>FILES</li>
<li>GLOBAL_STATUS</li>
<li>GLOBAL_VARIABLES</li>
<li>KEY_COLUMN_USAGE</li>
<li>OPTIMIZER_TRACE</li>
<li>PARAMETERS</li>
<li>PARTITIONS</li>
<li>PLUGINS</li>
<li>PROCESSLIST</li>
<li>PROFILING</li>
<li>REFERENTIAL_CONSTRAINTS</li>
<li>ROUTINES</li>
<li>SCHEMATA</li>
<li>SCHEMA_PRIVILEGES</li>
<li>SESSION_STATUS</li>
<li>SESSION_VARIABLES</li>
<li>STATISTICS</li>
<li>TABLES</li>
<li>TABLESPACES</li>
<li>TABLE_CONSTRAINTS</li>
<li>TABLE_PRIVILEGES</li>
<li>TRIGGERS</li>
<li>USER_PRIVILEGES</li>
<li>VIEWS</li>
<li>INNODB_LOCKS</li>
<li>INNODB_TRX</li>
<li>INNODB_SYS_DATAFILES</li>
<li>INNODB_FT_CONFIG</li>
<li>INNODB_SYS_VIRTUAL</li>
<li>INNODB_CMP</li>
<li>INNODB_FT_BEING_DELETED</li>
<li>INNODB_CMP_RESET</li>
<li>INNODB_CMP_PER_INDEX</li>
<li>INNODB_CMPMEM_RESET</li>
<li>INNODB_FT_DELETED</li>
<li>INNODB_BUFFER_PAGE_LRU</li>
<li>INNODB_LOCK_WAITS</li>
<li>INNODB_TEMP_TABLE_INFO</li>
<li>INNODB_SYS_INDEXES</li>
<li>INNODB_SYS_TABLES</li>
<li>INNODB_SYS_FIELDS</li>
<li>INNODB_CMP_PER_INDEX_RESET</li>
<li>INNODB_BUFFER_PAGE</li>
<li>INNODB_FT_DEFAULT_STOPWORD</li>
<li>INNODB_FT_INDEX_TABLE</li>
<li>INNODB_FT_INDEX_CACHE</li>
<li>INNODB_SYS_TABLESPACES</li>
<li>INNODB_METRICS</li>
<li>INNODB_SYS_FOREIGN_COLS</li>
<li>INNODB_CMPMEM</li>
<li>INNODB_BUFFER_POOL_STATS</li>
<li>INNODB_SYS_COLUMNS</li>
<li>INNODB_SYS_FOREIGN</li>
<li>INNODB_SYS_TABLESTATS</li>
</ul>
<p>可以很轻松的查找 表、字段、视图、触发器、存储过程等相关信息。</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/34544.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/34544.html" class="post-title-link" itemprop="url">PHP基础知识值功能设计考点</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-06 19:45:55" itemprop="dateCreated datePublished" datetime="2018-09-06T19:45:55+08:00">2018-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/" itemprop="url" rel="index"><span itemprop="name">PHP</span></a>
                </span>
                  ，
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/PHP%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" itemprop="url" rel="index"><span itemprop="name">PHP基础知识</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/34544.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/34544.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>1.8k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>2 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="MySQL数据类型"><a href="#MySQL数据类型" class="headerlink" title="MySQL数据类型"></a>MySQL数据类型</h1><h3 id="整形"><a href="#整形" class="headerlink" title="整形"></a>整形</h3><p>tinyint<br>smallint<br>mediumint<br>int<br>bigint</p>
<ul>
<li>属性<ul>
<li>unsigned</li>
</ul>
</li>
<li>长度<ul>
<li>可以为整数类型指定宽度,如int(11),对大多数应用是没有意义的,他不会限制值的合法范围,只会影响显示字符的个数</li>
<li>zerofill(零填充)</li>
</ul>
</li>
</ul>
<h3 id="实数类型"><a href="#实数类型" class="headerlink" title="实数类型"></a>实数类型</h3><p>float<br>double<br>decimal</p>
<p>decimal可以存储bigint还大的整数;可以用于存储精确的小数</p>
<p>Float和double类型支持使用标准的浮点进行近似计算</p>
<h3 id="字符串类型"><a href="#字符串类型" class="headerlink" title="字符串类型"></a>字符串类型</h3><p>varchar<br>char<br>text<br>blob</p>
<p>varchar类型用户存储可变长字符串,它比定长类型更节省空间.varchar使用1或2个额外字节记录字符串的长度,列长度小于255字节,使用一个字节表示否则用2个</p>
<p>varchar长度,如果存储内容超出指定长度,会报错</p>
<p>char是定长的,根据定义的字符串长度分配足够的空间</p>
<p>char会根据需要采用空格进行填充以方便比较</p>
<p>char适合存储很短的字符串,或者所有值都接近同一长度</p>
<p>char长度,超出设定的长度,会被截断</p>
<p>对于经常变更的数据,char比varchar更好.char不容易产生碎片</p>
<p>对于非常短的列,char比varchar在存储空间更具效率</p>
<p>只分配真正需要的空间,更长的列会消耗更多的内存</p>
<p>尽量避免使用blog和text类型,查询会使用临时表,导致严重的性能开销</p>
<h3 id="枚举"><a href="#枚举" class="headerlink" title="枚举"></a>枚举</h3><p>有时可以使用枚举替代常用的字符串类型</p>
<p>把不重复的集合存储成一个预定义的集合</p>
<p>非常紧凑,把列表值压缩到1或2个字节</p>
<p>内部存储的是整数</p>
<p>尽量避免使用数组作为枚举的常量,易混乱</p>
<p>排序是按照内部存储的整数进行排序</p>
<p>枚举表会使表大小大大减小</p>
<h3 id="日期和时间类型"><a href="#日期和时间类型" class="headerlink" title="日期和时间类型"></a>日期和时间类型</h3><p>尽量使用timestamp,比datetime空间效率高</p>
<p>用整数保存时间戳的格式通常不方便处理</p>
<p>如果需要存储微秒,可以使用bigint存储</p>
<h3 id="列属性"><a href="#列属性" class="headerlink" title="列属性"></a>列属性</h3><ul>
<li>auto_increment</li>
<li>default</li>
<li>not null</li>
<li>zerofill</li>
</ul>
<h1 id="MySql基础操作"><a href="#MySql基础操作" class="headerlink" title="MySql基础操作"></a>MySql基础操作</h1><h3 id="MySQL的连接和关闭"><a href="#MySQL的连接和关闭" class="headerlink" title="MySQL的连接和关闭"></a>MySQL的连接和关闭</h3><ul>
<li>mysql -u -p -h -P(端口)</li>
<li>其他<ul>
<li>\G<br>  格式化处理结果</li>
<li>\c<br>   取消当前的sql命令</li>
<li>\q<br>  退出</li>
<li>\s<br>  显示服务器状态</li>
<li>\h<br>  帮助信息</li>
<li>\d<br>  改变执行符(;)</li>
</ul>
</li>
</ul>
<h3 id="MySQL数据表引擎"><a href="#MySQL数据表引擎" class="headerlink" title="MySQL数据表引擎"></a>MySQL数据表引擎</h3><ul>
<li>innodb<ul>
<li>默认事务型引擎,最重要最广泛的存储引擎,性能优秀</li>
<li>数据存储在共享表空间,可以通过配置分开</li>
<li>对主键查询的性能高于其他类型的存储引擎</li>
<li>内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引,插入数据时自动构建插入缓冲区</li>
<li>通过一些机制和工具支持真正的热备份</li>
<li>支持崩溃后的安全恢复</li>
<li>支持行级锁</li>
<li>支持外键</li>
</ul>
</li>
<li>myisam<ul>
<li>5.1版本前,myisam是默认的引擎</li>
<li>拥有全文索引,压缩,空间函数</li>
<li>不支持事务和行级锁,不支持崩溃后的安全恢复</li>
<li>表存储在两个文件,myd和myi</li>
<li>设计简单,某些场景下性能很好(select *)</li>
</ul>
</li>
<li>其他表引擎<br>  Archive<br>  Blackhole<br>  Csv<br>  Memory</li>
<li>优先使用innodb</li>
</ul>
<h3 id="MySQL的锁机制"><a href="#MySQL的锁机制" class="headerlink" title="MySQL的锁机制"></a>MySQL的锁机制</h3><h5 id="基础概念"><a href="#基础概念" class="headerlink" title="基础概念"></a>基础概念</h5><ul>
<li>表锁是日常开发中常见的问题,因此也是面试当中最常见的考察点.当多个查询同一时刻进行数据修改时,就会产生并发控制的问题</li>
<li>共享锁和排它锁,其实就是读锁和写锁<ul>
<li>读锁<br>  共享的,不堵塞.多个用户可以同时读取一个资源,互不干扰</li>
<li>写锁<br>  排他的,一个写锁会阻塞其他的写锁和读锁.这样可以只允许一个人进行写入,防止其他用户读取正在写入的资源</li>
</ul>
</li>
<li>锁粒度<ul>
<li>表锁<br>  系统性能开销最小,会锁定整张表,myisam使用表锁</li>
<li>行锁<br>  最大程度地支持并发处理,但是也会带来了最大的锁开销,innodb实现行锁</li>
</ul>
</li>
</ul>
<h3 id="MySQL事务处理"><a href="#MySQL事务处理" class="headerlink" title="MySQL事务处理"></a>MySQL事务处理</h3><p>MySQL提供事务处理的表引擎,innodb</p>
<p>服务器不管理事务,由下层的引擎实现,所以同一个事务中,使用多种存储引擎不靠谱</p>
<p>在非事务的表上执行事务操作MySQL不会发出提醒,也不会报错</p>
<h3 id="MySQL存储过程"><a href="#MySQL存储过程" class="headerlink" title="MySQL存储过程"></a>MySQL存储过程</h3><p>为以后的使用而保存的一条或多条MySQL语句的集合</p>
<p>存储过程就是有业务逻辑和流程的集合</p>
<p>可以在存储过程中创建表,更新表,删除表等等</p>
<h5 id="使用场景"><a href="#使用场景" class="headerlink" title="使用场景"></a>使用场景</h5><ul>
<li>通过把处理封装在容易使用的单元中,简化复杂的操作</li>
<li>保证数据的一致性</li>
<li>简化对变动的管理</li>
</ul>
<h3 id="MySQL的触发器"><a href="#MySQL的触发器" class="headerlink" title="MySQL的触发器"></a>MySQL的触发器</h3><p>触发器是提供程序猿和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程</p>
<h5 id="使用场景-1"><a href="#使用场景-1" class="headerlink" title="使用场景"></a>使用场景</h5><ul>
<li>可通过数据库中相关表实现级连更改</li>
<li>实时监控某表中的某个字段的更改而需要做出相应的处理</li>
<li>某些业务编号的生成</li>
<li>滥用会造成数据库及应用程序维护困难</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/51.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/51.html" class="post-title-link" itemprop="url">计算机基础知识之《计算机是怎样跑起来的》</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-06 00:00:00" itemprop="dateCreated datePublished" datetime="2018-09-06T00:00:00+08:00">2018-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E5%9B%BE%E4%B9%A6/" itemprop="url" rel="index"><span itemprop="name">图书</span></a>
                </span>
                  ，
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E5%9B%BE%E4%B9%A6/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/" itemprop="url" rel="index"><span itemprop="name">计算机基础</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/51.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/51.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>9.8k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>9 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="第一章-计算机的三大原则"><a href="#第一章-计算机的三大原则" class="headerlink" title="第一章 计算机的三大原则"></a>第一章 计算机的三大原则</h1><h2 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h2><ul>
<li>什么是编码？<br> 通常将为了便于计算机处理而经过数字化处理的信息称作编码<br> 计算机内部会把所有的信息都当成数字来处理，尽管有些信息本来不是数字。比如，用于表示字符的数字是“字符编码”，用于表示颜色的数字是“颜色编码”<h2 id="小章节"><a href="#小章节" class="headerlink" title="小章节"></a>小章节</h2></li>
</ul>
<ol>
<li>计算机的三大根本性基础<ol>
<li><strong>计算机是执行输入、运算、输出的机器</strong></li>
<li><strong>程序是指令和数据的集合</strong></li>
<li><strong>计算机的处理方式有时与人的思维方式不同</strong></li>
</ol>
</li>
<li>输入、运算、输出是硬件的基础<br> 输入、运算、输出是三者必须成套出现，缺一不可。<ul>
<li>现在的计算机没有自主意识，因而不可能独立思考创造信息</li>
<li>没有运算的机器那是电线</li>
<li>没有输出，那就不是计算机而是垃圾箱</li>
</ul>
</li>
<li>软件是指令和数据的集合</li>
<li>对计算机来说，什么都是数字<h2 id="个人理解"><a href="#个人理解" class="headerlink" title="个人理解"></a>个人理解</h2>计算机是什么？当看到第二小节是那句“计算机是处理信息的机器”一下子就冒出来了，如果没记错的话那还是初中或高中计算机课提到的……当浏览第二章时，这种计算机硬件是“信息”输入、运算、输出的机器的观点给我当头一棒。</li>
</ol>
<h1 id="第二章-试着自己制造一台计算机吧"><a href="#第二章-试着自己制造一台计算机吧" class="headerlink" title="第二章 试着自己制造一台计算机吧"></a>第二章 试着自己制造一台计算机吧</h1><h2 id="问题-1"><a href="#问题-1" class="headerlink" title="问题"></a>问题</h2><ul>
<li>CPU是什么的缩写<br>  Central Processing Unit（中央处理器）<h2 id="小章节-1"><a href="#小章节-1" class="headerlink" title="小章节"></a>小章节</h2></li>
</ul>
<ol>
<li>制作微型计算机所必须的原件<ol>
<li>CPU</li>
<li>内存</li>
<li>I&#x2F;O</li>
<li>时钟发生器</li>
<li>指拨开关</li>
</ol>
</li>
<li>链接电源、数据和地址总线</li>
</ol>
<blockquote>
<p>涉及到的一些相关词汇</p>
</blockquote>
<ul>
<li>IC集成电路（integrated circuit）是一种微型电子器件或部件。采用一定的工艺，把一个电路中所需的晶体管、电阻、电容和电感等元件及布线互连一起，制作在一小块或几小块半导体晶片或介质基片上，然后封装在一个管壳内，成为具有所需电路功能的微型结构；其中所有元件在结构上已组成一个整体，使电子元件向着微小型化、低功耗、智能化和高可靠性方面迈进了一大步。它在电路中用字母IC表示。集成电路发明者为杰克▪基尔比（基于锗（Ge）的集成电路）和罗伯特▪诺伊思（基于硅（Si）的集成电路）。当今半导体工业大多数应用的是基于硅的集成电路。</li>
<li>时钟信号是计算机科学以及相关领域用语，时钟信号通常被用于同步电路当中，扮演计时器的角色，保证相关的电子组件得以同步运作。</li>
<li>寄存器，是集成电路中非常重要的一种存储单元，通常由触发器组成。在集成电路设计中，寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问，只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问，CPU中的寄存器就是其中一种，作为软硬件的接口，为广泛的通用编程用户所熟知。</li>
</ul>
<blockquote>
<p>各个IC的接脚</p>
</blockquote>
<ul>
<li>Vcc和GND（共有），IC和普通电器一样，需要接通电源才可以使用。Vcc是电源电压（相当于正极），GND是接地线（相当于负极）</li>
<li>A0-A15（address）（共有），其后的数字表示一个16位的二进制数中各个数字的位置。这16个引脚，可以表示0000 0000 0000 0000-1111 1111 1111 1111（二进制）个数据存取单元</li>
<li>D0-D7（data）（共有），其后数字和上述一样，Z80的CPU可以一次性的输入或输出8比特（八个引脚）的数据，如若输入输出超过8比特的数据，只得先把数据拆分</li>
<li>B&#x2F;A和C&#x2F;D（I&#x2F;O），控制出I&#x2F;O的上寄存器的引脚（和CPU的A0、A1相连）。Z80 PIO共有4个寄存器。两个用于设定PIO本身功能，两个用于存储与外部设备进行输入输出的数据</li>
<li>MREQ（Memory Request 内存请求）和IORQ（I&#x2F;O Request I&#x2F;O请求）（cpu）</li>
<li>CE（CHip Enable 选通信片）（内存和I&#x2F;O），跟CPU上的MREQ和IORQ搭配以控制当下CPU和谁连接</li>
<li>RD（read 输入）和WR（write 输出）（CPU），表示当前和内存或I&#x2F;O连接是输出还是输出</li>
<li>M1（Machine Cycle 1 机器周期1）（CPU、I&#x2F;O）用于同步的引脚</li>
<li>INT（Interrupt 中断）（CPU、I&#x2F;O）I&#x2F;O可以中断CPU正在执行程序的引脚</li>
<li>RESET（重置），重置CPU，可以启动CPU</li>
<li>BUS（总线，这里不是指特定的引脚，只是个说明），连接到CPU中数据引脚、地址引脚、控制引脚的电路的统称。使用快动开关可以使Z80 CPU的BUSRQ（Bus Request 总线请求）上的值在0和1之前切换。若BUSRQ为0，则CPU从电路中隔离。当处于这种隔离状态时，就可以不通过CPU，手动地向内存写入程序了。向这样不经过CPU而直接从外部设备读写内存的行为叫做DMA（Direct Memory Access 直接储存器访问）。在真实的计算机中，硬盘等设备要读写内存使用的就是DMA。</li>
<li>BUSAK（BUS Acknowledge 响应总线请求）只有BUSRQ和BUSAK同时为0时才可以进行DMA<h2 id="个人理解-1"><a href="#个人理解-1" class="headerlink" title="个人理解"></a>个人理解</h2>这一章是我目前读过（粗读）次数最多的章节，然而直到我打算把这些内容做个笔记是也有些概念没有理解，就是那个“寄存器”，好吧，现在我的迷茫只比之前清了少些。说起来真是如此，对照着Z80微型计算机的线路图那么走上一遍，对于计算机的理解还真的深了一些。好吧，这些都谈不上个人理解，只能算个人感想……<br>对于时钟信号和寄存器，我还是不甚理解。算了，有时候囫囵吞枣是必要的<br>时钟信号一开始我以为是想之前自己网络编程中的那种网页刷新效果一般，是触发CPU运行的东西。现在看来不是，这玩意是同步CPU、内存和I&#x2F;O之间通讯的东西，一个周期意味着同时进行一步（如输入或输出一个8字节的数据，这里的8字节因为Z80CPU是8位的，现在电脑都是64位的了）</li>
</ul>
<h1 id="第三章-体验一次手工汇编"><a href="#第三章-体验一次手工汇编" class="headerlink" title="第三章 体验一次手工汇编"></a>第三章 体验一次手工汇编</h1><h2 id="问题-2"><a href="#问题-2" class="headerlink" title="问题"></a>问题</h2><ol>
<li>什么是机器语言？<br>由二进制数字构成的程序，CPU可以直接对其解释、执行。不管汇编语言还是高级语言，都必须先转化为机器语言才能被执行。机器语言也被称作原生代码（Native Code）。</li>
<li>通常吧标志内存或I&#x2F;O中存储单元的数字称作什么？<br>地址。内存中由多个数据存储单元。计算机从0开始发的编号标识每一个存储单元，这些编号就是地址（Address）。I&#x2F;O中的寄存器也可以用地址标识。</li>
<li>CPU中的标志寄存器（Flags Register）有什么用？<br>用于在运算指令执行后，存储运算结果的某些状态。flag本意是“旗子”，这里引申为“标志”。一旦执行了算数运算、逻辑运算、比较运算等指令后，标识寄存器并不会存放运算结果的值，而是会把运算后的某些状态存储起来。例如运算结果是否为0，是否产生了负数，是否有溢出（overflow）等。<h2 id="小章节-2"><a href="#小章节-2" class="headerlink" title="小章节"></a>小章节</h2><h3 id="从从程序员的角度看硬件"><a href="#从从程序员的角度看硬件" class="headerlink" title="从从程序员的角度看硬件"></a>从从程序员的角度看硬件</h3>真正需要了解的硬件信息只有七种，没有必要在编程的时候还看着电路图。</li>
</ol>
<ul>
<li>CPU信息<ul>
<li>CPU种类<ul>
<li>可以使用那种机器语言取决于CPU的种类。不同的CPU可能使用不同的机器语言。</li>
</ul>
</li>
<li>时钟信号频率<ul>
<li>所谓时钟信号频率，就是由时钟发生器送给CPU的电信号的频率。</li>
</ul>
</li>
</ul>
</li>
<li>内存信息<ul>
<li>地址空间<ul>
<li>每个地址都标识着一个内存中的数据存储单元，这些地址的范围即为地址空间</li>
</ul>
</li>
<li>每个地址可以存储多少比特的信息<ul>
<li>Z80计算机每一个地址可以存储8比特（1字节）的指令或数据</li>
</ul>
</li>
</ul>
</li>
<li>I&#x2F;O信息<ul>
<li>I&#x2F;O的种类<ul>
<li>连接这计算机和周边设备的I&#x2F;</li>
</ul>
</li>
<li>地址空间</li>
<li>连接着何种周边设备</li>
</ul>
</li>
</ul>
<h3 id="机器语言和汇编语言"><a href="#机器语言和汇编语言" class="headerlink" title="机器语言和汇编语言"></a>机器语言和汇编语言</h3><ul>
<li>简单的说，机器语言是CPU可以直接运行的代码，就是那个010101；汇编语言是使用“助记符”（代替机器语言特定动作的简短符号）表示的机器语言。</li>
<li>汇编语言的语法十分简单，以至于语法只有一个，即把“标签”、“操作码（指令）”和“操作数（指令的对象）”并写在一行。<ul>
<li>标签的作用是为该行代码对应的内存地址起一个名字。</li>
<li>操作码就是表示“做什么”的指令</li>
<li>操作数表示的是指令执行的对象。CPU的寄存器、内存地址、I&#x2F;O地址或直接给出的数字都可以作为操作数。多个操作数之间使用逗号隔开<h3 id="Z80-CPU寄存器的结构"><a href="#Z80-CPU寄存器的结构" class="headerlink" title="Z80 CPU寄存器的结构"></a>Z80 CPU寄存器的结构</h3></li>
</ul>
</li>
<li>计算机的硬件有三个基本要素，CPU、内存和I&#x2F;O<ul>
<li>CPU负责解释、执行程序，从内存或I&#x2F;O输入数据，在内部进行运算，再把运算结果输出到内存和I&#x2F;O。</li>
<li>内存存放着程序，程序是指令和数据的集合。</li>
<li>I&#x2F;O中临时存放着用于和周边设备进行输入输出的数据。</li>
</ul>
</li>
<li>Z80CPU中的寄存器<br>与I&#x2F;O中的寄存器不同，CPU中的寄存器不仅能存储数据，还具备着对数据进行运算的能力。<br>CPU带什么样的寄存器取决于CPU的种类。Z80 CPU带有A、B……L、I、R、IX、IY、SP、PC。后四个寄存器的大小是16比特，其余是8比特。寄存器的用途取决与它的类型。有的指令只能将特定的寄存器指定为操作数。<br>举例来说<ul>
<li>A寄存器也叫做“累加器”，是运算的核心。</li>
<li>F寄存器也叫做“标志寄存器”，用于存储运算结果的状态，比如是否发生了进位，数字大小的比较结果等。</li>
<li>PC寄存器也叫作“程序指针”，存储着执行CPU接下来要执行的指令地址。PC寄存器的值会随着时钟信号自动更新，可以说程序就是依靠不断变化的PC寄存器的值运行起来的。</li>
<li>SP寄存器也叫做“栈顶指针”，用于在内存中创建一块成为“栈”的临时数据存储区域。<h3 id="追踪程序的运行过程"><a href="#追踪程序的运行过程" class="headerlink" title="追踪程序的运行过程"></a>追踪程序的运行过程</h3>通过反复的进行“读取指令”“解释、执行指令”“更新PC寄存器的值”这三个操作，程序就能运行起来了……<h3 id="尝试手工汇编"><a href="#尝试手工汇编" class="headerlink" title="尝试手工汇编"></a>尝试手工汇编</h3>在CPU的资料中，明确写有可以使用的助记符，以及助记符转化为机器语言的数值。通过这些资料，就可以手工地把汇编语言编写的程序转化为机器语言的程序……<h3 id="尝试估算程序的执行时间"><a href="#尝试估算程序的执行时间" class="headerlink" title="尝试估算程序的执行时间"></a>尝试估算程序的执行时间</h3>把每条指令的时钟累加起来……</li>
</ul>
</li>
</ul>
<h1 id="第四章-程序像河流一样流动着"><a href="#第四章-程序像河流一样流动着" class="headerlink" title="第四章 程序像河流一样流动着"></a>第四章 程序像河流一样流动着</h1><h2 id="问题-3"><a href="#问题-3" class="headerlink" title="问题"></a>问题</h2><ol>
<li>flow chart的中文意思是什么？<br>流程图。</li>
<li>请说出自然界中河流的三种流动方式。<br>向一个方向流淌；流着流着产生支流；卷成旋涡。<br>好吧，分别对应顺序执行、条件分支和循环，这作者也是够了。</li>
<li>事件驱动是什么？<br>用户的操作等产生事件后，由事件决定程序的流程。<br>好吧，js各种事件么……<h2 id="小章节-3"><a href="#小章节-3" class="headerlink" title="小章节"></a>小章节</h2><h3 id="程序的流程分为三种"><a href="#程序的流程分为三种" class="headerlink" title="程序的流程分为三种"></a>程序的流程分为三种</h3>CPU中的有一个被称作PC（program couter 程序计数器）的寄存器，负责存储内存地址，该地址指向下一条即将执行的指令。每解释执行一条指令，PC寄存器的值就会自动被更新为下一条指令的地址。<h3 id="结构化程序设计"><a href="#结构化程序设计" class="headerlink" title="结构化程序设计"></a>结构化程序设计</h3>为了把程序编写得具备结构性，仅使用顺序执行、条件分支和循环表示程序的流程即可，而不再使用跳转指令。<br>作为计算机硬件上的行为，无论是条件分支还是循环都必须使用跳转指令实现。但高级语言中跳转就变得可有可无了，反而在高级语言中使用跳转会使得程序陷入到流程错综复杂的状态。<h3 id="画流程图来思考算法"><a href="#画流程图来思考算法" class="headerlink" title="画流程图来思考算法"></a>画流程图来思考算法</h3>算法，就是解决既定问题的步骤。想让计算机解决问题，就需要把问题的解法转化成程序的流程。<br>思考算法是的要点是分两步走，先从整体上考虑程序的粗略流程，再考虑程序各个部分细节的流程。几乎所有的程序从整体来看都具有一个一成不变的流程——<strong>初始化处理-&gt;循环处理-&gt;收尾处理</strong><h3 id="特殊的程序流程——中断处理"><a href="#特殊的程序流程——中断处理" class="headerlink" title="特殊的程序流程——中断处理"></a>特殊的程序流程——中断处理</h3>中断处理是指程序的流程突然跳转到程序中特定的地方，这样的地方被成为中断处理例程（Routine）或中断处理程序（Handle），而这种跳转是通过CPU所具备的硬件功能实现的。<br>中断处理以硬件发出的请求为条件，使程序的流程产生分支，因此可以说它是一种特殊的条件分支。但编写程序是并不需要编写有关中断处理的代码。因为处理中断请求的程序，或内置于被烧录在计算机ROM中的BIOS系统（Basic Input Output System 基本输入输出系统，或内置于相应的操作系统中。<h3 id="特殊的程序流程——事件驱动"><a href="#特殊的程序流程——事件驱动" class="headerlink" title="特殊的程序流程——事件驱动"></a>特殊的程序流程——事件驱动</h3>可以把事件驱动想象成两个程序在对话，如下<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 主程序</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="type">int</span> APIENTER <span class="title function_">WinMain</span><span class="params">()</span> &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 窗口过程</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line">LRESULT CALLBACK <span class="title function_">WndProc</span><span class="params">()</span>&#123;&#125;</span><br></pre></td></tr></table></figure>
通常把用户在应用程序中点击鼠标或者敲击键盘这样的操作称作“事件”（Event）。负责检测事件的是windows。Windows通过调用应用程序WndProc()函数通知应用程序的发生。而应用程序根据事件的类型做出相应的处理。这种机制就是事件驱动。可以说事件驱动也是一种特殊的分支，它以从Windows送来的通知为条件，根据通知的内容决定程序的下一步流程。<br>要实现事件驱动，就必须吧应用程序中的WndProc()函数的起始内存地址告诉Windows。这一步将在应用程序WinMain()中作为初始化处理被执行。<h2 id="个人理解-2"><a href="#个人理解-2" class="headerlink" title="个人理解"></a>个人理解</h2>这一章主要理解了PC（process counter）这个东西。好吧，我能说这个东西我看了五六遍才知道大约理解了么……好吧，幸亏看书之前有了做笔记的决定——即使这个笔记大部分是照抄的，也是蛮有用的。话说这个process counter用的是队列吗，要不然怎么知道下一个地址指的是谁？<br>一开始对书中所描绘的“事件驱动”给整蒙了。好吧，这有什么，不就是js中的绑定事件么……就是初始化处理这块我一下子没有转过来弯（好吧，那个on之类的说的大概就是这个）。<br>对于整个中断处理，还是第一次知道到底怎么回事。话说那个键盘输入的例子，就是那个DMA（direct memory access）吧。<br>至于流程图什么的，还真很少做过。主要是感觉费时间。我一直想找一个简单的描绘流程图之类的软件，可惜那大都需要学习成本，一开始就打到我了。<br>那个结构化设计，好吧，除了一开始接触的basic语言，还真没用过。php自带的这个我现在都不会用……</li>
</ol>
<h1 id="第五章-与算法成为好朋友的七个要点"><a href="#第五章-与算法成为好朋友的七个要点" class="headerlink" title="第五章 与算法成为好朋友的七个要点"></a>第五章 与算法成为好朋友的七个要点</h1><h2 id="问题-4"><a href="#问题-4" class="headerlink" title="问题"></a>问题</h2><ol>
<li>程序中“哨兵”指的是什么？<br>“哨兵”指的是一种含有特殊值的数据，可用于表示数据的结尾等。<br>字符串的末尾用0表示（这不是php……），链表的末尾用-1表示，像这样特殊的数据就是哨兵。<h2 id="小章节-4"><a href="#小章节-4" class="headerlink" title="小章节"></a>小章节</h2><h3 id="算法是程序设计的“熟语”"><a href="#算法是程序设计的“熟语”" class="headerlink" title="算法是程序设计的“熟语”"></a>算法是程序设计的“熟语”</h3></li>
</ol>
<ul>
<li>要点1：算法中解决问题的步骤是明确切有限的。<ul>
<li>通俗地说，算法就是<strong>把解决问题的步骤无一遗漏地用文字或图表示出来，其中步骤必须是明确并且步骤数必须是有限的</strong>。</li>
<li>把算法定义中的“用文字或图”换成“用程序”，就成了程序的定义了……</li>
<li>明确是指，在解决问题的步骤中，有了与直觉相关的因素，就不算算法了。</li>
</ul>
</li>
<li>要点2：计算机不考直觉而是机械地解决问题<ol>
<li>步骤是明确的、完全不依赖直觉的</li>
<li>步骤是机械的、不需要动脑筋就能完成的</li>
<li>使步骤终止的原因是明确的</li>
</ol>
</li>
<li>要点3：了解并应用典型算法</li>
<li>要点4：利用计算机的处理速度</li>
<li>要点5：使用编程技巧提升程序执行速度<ul>
<li>比如“哨兵”</li>
</ul>
</li>
<li>要点6：找出数字间的规律<ul>
<li>所有的信息都可以用数字表示——这是计算机的特性之一。因此为了构造算法，经常会利用到存在与数字间的规律。</li>
</ul>
</li>
<li>要点7：先在纸上考虑算法<h2 id="个人理解-3"><a href="#个人理解-3" class="headerlink" title="个人理解"></a>个人理解</h2>那个，找出数字间的规律还是满考验“直觉”的，就那个比拳算法我就没有想起来……如果是我，估计得一堆and和or……</li>
</ul>
<h1 id="第六章-与数据结构成为好朋友的七个要点"><a href="#第六章-与数据结构成为好朋友的七个要点" class="headerlink" title="第六章 与数据结构成为好朋友的七个要点"></a>第六章 与数据结构成为好朋友的七个要点</h1><h2 id="问题-5"><a href="#问题-5" class="headerlink" title="问题"></a>问题</h2><ul>
<li>程序中的变量是指什么？<br>变量是数据的容器。<br>变量中所存储的数据是可以改变的。变量的实质是按照变量所存储数据的大小被分配到的一块内存空间。</li>
<li>把若干个数据沿直线排列起来的数据结构叫做什么？<br>数组<br>使用了数组就可以高效地处理大量的数据。数组的实质是连续分配的一块特定大小的内存空间。</li>
<li>栈和队列的区别是什么<br>前者LIFO（Last In First Out)，后者FIFO（First In First Out）。<h2 id="小章节-5"><a href="#小章节-5" class="headerlink" title="小章节"></a>小章节</h2></li>
<li>要点1：了解内存和变量的关系<ul>
<li>计算机所处理的数据都存储在被称为内存的IC中。在一般的个人计算机中，内存内部被分割成若干数据存储单元，每个单元可以存储8比特的数据（8比特 &#x3D; 1字节）。为了区分这些单元，每个单元被分配了一个编号，这个编号被成为“地址”。</li>
<li>因为依靠指定地址的方式编写程序很麻烦，所以在几乎所有的高级语言中，都是使用变量把数据存储进内存，或从内存中把数据读出来。</li>
<li>变量的实质是按照变量所存储数据的大小被分配到的一块内存空间。</li>
</ul>
</li>
<li>要点2：了解作为数据结构基础的数组<ul>
<li>数组实际上是为了存储多个数据而在内存上集中分配出的一块内存空间。</li>
<li>数组是数据结构的基础，之所以这么说是因为数组反映了内存的物理结构本身。</li>
</ul>
</li>
<li>要点3：了解数组的应用——作为典型算法的数据结构<ul>
<li>数组是一种直接利用内存物理结构（计算机的特性）的最基本的数据结构。</li>
</ul>
</li>
<li>要点4：了解并掌握典型数据结构的类型和概念<ul>
<li>典型数据结构</li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>数据结构的特征</th>
</tr>
</thead>
<tbody><tr>
<td>栈</td>
<td>把数据像小山那样堆积起来</td>
</tr>
<tr>
<td>队列</td>
<td>把数据排成一队</td>
</tr>
<tr>
<td>链表</td>
<td>可以任意地改变数据的排列顺序</td>
</tr>
<tr>
<td>二叉树</td>
<td>把数据分成两路排列</td>
</tr>
</tbody></table>
<p>这些数据结构其实都是通过程序从逻辑上改变了内存的物理结构。</p>
<ul>
<li>要点５：了解栈和队列的实现方法<br>栈<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">char</span> Stack[<span class="number">100</span>];        <span class="comment">/* 作为栈本质的数组 */</span></span><br><span class="line"><span class="type">char</span> StackPointer = <span class="number">0</span>;  <span class="comment">/* 栈顶指针 */</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* 入栈函数 */</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">Push</span><span class="params">(<span class="type">char</span> Data)</span> &#123;</span><br><span class="line">    <span class="comment">/* 把数据存储到栈顶指针所指的位置上 */</span></span><br><span class="line">    Stack[StackPointer] = Data;　</span><br><span class="line">    <span class="comment">/* 更新栈顶指针 */</span></span><br><span class="line">    StackPointer ++;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 出栈函数 */</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">Pop</span><span class="params">()</span> &#123;</span><br><span class="line">    <span class="comment">/* 更新栈顶指针 */</span></span><br><span class="line">    StackPointer --；</span><br><span class="line">    <span class="comment">/* 把数据从栈顶指针所在的位置中取出来 */</span></span><br><span class="line">    <span class="keyword">return</span> Stack[StackPointer];</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure>
队列</li>
</ul>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">char</span> Queue[<span class="number">100</span>];    <span class="comment">/*作为队列的本质的数组*/</span></span><br><span class="line"><span class="type">char</span> SetIndex = <span class="number">0</span>;  <span class="comment">/*标识数据存储位置的索引*/</span></span><br><span class="line"><span class="type">char</span> GetIndex = <span class="number">0</span>;  <span class="comment">/*标识数据读取位置的索引*/</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/*存储数据的函数*/</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">Set</span><span class="params">(<span class="type">char</span> Data)</span> &#123;</span><br><span class="line">    <span class="comment">/*存入数据*/</span></span><br><span class="line">    Queue[SetIndex] = Data;</span><br><span class="line">    <span class="comment">/*更新标识数据存储位置的索引*/</span></span><br><span class="line">    SetIndex ++;</span><br><span class="line">    <span class="comment">/*如果已经达到数组的末尾则折回开头*/</span></span><br><span class="line">    <span class="keyword">if</span> (SetIndex &gt;= <span class="number">100</span>) &#123;</span><br><span class="line">        SetIndex = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/*读取数据的函数*/</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">Get</span><span class="params">()</span> &#123;</span><br><span class="line">    <span class="type">char</span> Data;</span><br><span class="line">    <span class="comment">/*读出数据*/</span></span><br><span class="line">    Data = Queue[GetIndex];</span><br><span class="line">    <span class="comment">/*更新标识数据读取位置的索引*/</span></span><br><span class="line">    GetIndex ++;</span><br><span class="line">    <span class="comment">/*如果已经达到数组的末尾则折回开头*/</span></span><br><span class="line">    <span class="keyword">if</span> (GetIndex &gt;= <span class="number">100</span>) &#123;</span><br><span class="line">        GetIndex = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> Data;</span><br><span class="line">&#125;</span><br><span class="line">```   </span><br><span class="line">- 要点<span class="number">6</span>：了解结构体的组成</span><br><span class="line">    - 所谓结构体，就是把若干个数据项汇集到一处并赋予其名字后形成的一个整体。</span><br><span class="line">    - 一旦定义完结构提，就可以把结构提当作是一种数据类型，用它来定义变量。</span><br><span class="line">- 要点<span class="number">7</span>：了解链表和二叉树的实现方法</span><br><span class="line">    - 都是“自我引用的结构体”</span><br><span class="line">## 个人理解</span><br><span class="line">结构体什么的都可以理解了，但是不知道二叉树是怎么用的。</span><br><span class="line"></span><br><span class="line"># 第七章 成为会使用面向对象编程的程序员吧</span><br><span class="line">## 小章节</span><br><span class="line">### 什么是面向对象</span><br><span class="line">面向对象是一种基于以下思路的程序设计方法：将关注点置于对象本身，对象的构成要素包含对象的行为及操作，以此为基础进行编程。这种方法使程序易于复用。其中所使用的主要编程技巧有继承、封装、多态三种。</span><br><span class="line">### 对面向对象的几种观点</span><br><span class="line">- 观点<span class="number">1</span>：面向对象编程通过把组件拼装到一起构建程序</span><br><span class="line">类就是程序的组件。面向对象的关键在于能否灵活地运用类。</span><br><span class="line">- 观点<span class="number">2</span>：面向对象编程能够提升程序的开发效率和可维护性</span><br><span class="line">“我是创造类的人，你是使用类的人”</span><br><span class="line">- 观点<span class="number">3</span>：面向对象是适用于开发大型程序的开发方法</span><br><span class="line">- 观点<span class="number">4</span>：面向对象就是在为现实世界建模</span><br><span class="line">- 观点<span class="number">5</span>：面向对象编程可以借助UML设计程序</span><br><span class="line">- 观点<span class="number">6</span>：面向对象通过在程序间传递消息驱动程序</span><br><span class="line">- 观点<span class="number">7</span>：在面向对象编程中使用继承、封装和多态</span><br><span class="line">    - 继承：通过继承已存在的类所拥有的成员而生成新的类</span><br><span class="line">    - 封装：在类中所拥有的成员中，隐藏掉那些没有必要展现给该类调用着的成员</span><br><span class="line">    - 多态：针对同一种消息，不同的对象可以进行不同的操作</span><br><span class="line">### 类的三种使用方法</span><br><span class="line">- 仅仅调用类所持有的个别成员（函数和变量）</span><br><span class="line">- 在类的定义中包含其他的类（又称组合）</span><br><span class="line">- 通过继承已存在的类定义出新的类</span><br><span class="line">## 个人看法</span><br><span class="line">一开始看到这个章节的时候有些不以为意，可看过之后才知道自己是太年轻了。虽说我一直实践着面向对象编程，可我依旧不知道为什么要使用面向对象编程。在实际的工作中。我所用的的面向对象很大程度上是基于现有的框架。比如说在js中，我的那一套就根本没有用到过面向对象编程。</span><br><span class="line">这几个观点我几乎不知道有什么差距——甚至在我看来那都是面向对象的特性。但这正是我浅薄的一点——哪怕我昨天也看过这一章内容，我也说不清面向对象是什么——即便我一直在“用”。</span><br><span class="line">这也是我一贯的做法——我很懒，懒到连概念都不愿意记。</span><br><span class="line">对于什么是面向对象，这本书的作者说“面向对象编程就是把组件拼装到一起的进行编程的方法”。</span><br><span class="line"></span><br><span class="line"># 第八章一用就会的数据库</span><br><span class="line">## 问题</span><br><span class="line">- 数据库术语中“表”是什么意思？</span><br><span class="line">    - 表（table）就是被整理成表格形式的数据。一张表由若干列和行构成。列也被成为字段（field），行也被成为记录（record）</span><br><span class="line">- DBMS是什么的简称？</span><br><span class="line">    - Database Management System （数据库管理系统）的简称。比如MySQL</span><br><span class="line">- 键和索引的区别是什么？</span><br><span class="line">    - 键是用于设定表与表之前的关系（relationship），而索引是提升数据检索速度的机制。</span><br><span class="line">    - 其上每个值都能唯一标识一条记录的字段被成为主键。为了在表与表之间建立关系而在表中添加的、其他表主键的字段被成为外键。而索引是与键无关的机制。</span><br><span class="line">## 小章节</span><br><span class="line">### 数据库是数据的基地</span><br><span class="line">### 数据文件、DBMS和数据库应用程序</span><br><span class="line">DBMS是应用程序和数据文件的中介</span><br><span class="line">```flow</span><br><span class="line">a=&gt;subroutine: 应用程序</span><br><span class="line">d=&gt;operation: 请求操作数据</span><br><span class="line">b=&gt;subroutine: DBMS</span><br><span class="line">e=&gt;operation: 实际操作数据</span><br><span class="line">c=&gt;subroutine: 数据文件</span><br><span class="line"></span><br><span class="line">a-&gt;d-&gt;b-&gt;e-&gt;c</span><br></pre></td></tr></table></figure>
<h3 id="构建数据库"><a href="#构建数据库" class="headerlink" title="构建数据库"></a>构建数据库</h3><ol>
<li>设计数据库<ol>
<li>把必要数据筛选出来</li>
<li>考虑各种数据的属性（数据类型）</li>
</ol>
</li>
<li>通过拆表和整理数据实现规范化<ul>
<li>所谓规范化，就是把一张大表分割成多张小表，然后再在小表之间建立关系，以此来达到整理数据库结构的目的</li>
<li>规范化的要点是在一个数据库中要避免重复存储相同的数据。</li>
</ul>
</li>
<li>用主键和外键在表间建立关系<ul>
<li>表之间的关系使记录和记录关联了起来。记录之间虽然在逻辑上有一对一、多对多、一对多（多对一）三种关系，但关系型数据库无法直接表示多对多关系。比如把商城的数据库只分为顾客表和商品表，那么两表之间就形成了多对多关系（一个客人可以买多种商品，同时一种商品也可以被多个人买）。这时，可在两表之间再加一表——销售记录表。这张加入的表被称作链接表（link table）。</li>
<li>DBMS还具有检查参照完整性的功能，这种机制也是为了一致并安全地存储数据。</li>
</ul>
</li>
<li>索引能够提升数据库的检索速度<ul>
<li>索引表是一种数据结构，存储着字段的值以及字段所对应记录的位置。如果在顾客表的顾客姓名字段上设置索引，DBMS就会创建一张索引表。表中有两个字段，分别存储着顾客姓名和位置。因为索引表中的字段数更少，所以可以更快地进行数据的检索和排序。当查询数据时，DBMS先在索引表进行数据的检索和排序，然后根据位置信息把完整的数据从原有的表中取出来。</li>
</ul>
</li>
<li>设计用户界面<ul>
<li>优先设计数据库，再设计用户界面</li>
</ul>
</li>
<li>向DBMS发送CURD操作的SQL语句<ul>
<li>为了对数据库进行CURD操作，就必须从应用程序向DMBS发送命令（SQL语句）</li>
</ul>
</li>
<li>使用数据对象向DBMS发送SQL语句<ul>
<li>向DBMS发送SQL语句，一般情况下使用的都是被称为数据对象（data object）的软件组件</li>
</ul>
</li>
<li>事务控制也可以交给DBMS处理<h2 id="个人看法"><a href="#个人看法" class="headerlink" title="个人看法"></a>个人看法</h2>之前以为数据库自己都用了那么久，总该知道点什么。唉，其实书中所述的我都知道，但实际上灵活运用的不多。在现在的开发中，数据库的效率要求不高，各种冗余字段的建立让我感觉像是做了假开发……</li>
</ol>
<h1 id="第九章-通过七个简单的实验理解TCP-x2F-IP网络"><a href="#第九章-通过七个简单的实验理解TCP-x2F-IP网络" class="headerlink" title="第九章 通过七个简单的实验理解TCP&#x2F;IP网络"></a>第九章 通过七个简单的实验理解TCP&#x2F;IP网络</h1><h1 id="第十章-试着加密数据吧"><a href="#第十章-试着加密数据吧" class="headerlink" title="第十章 试着加密数据吧"></a>第十章 试着加密数据吧</h1><h1 id="第十一章-XML究竟是什么"><a href="#第十一章-XML究竟是什么" class="headerlink" title="第十一章 XML究竟是什么"></a>第十一章 XML究竟是什么</h1><h1 id="第十二章-SE负责监管计算机系统的构建"><a href="#第十二章-SE负责监管计算机系统的构建" class="headerlink" title="第十二章 SE负责监管计算机系统的构建"></a>第十二章 SE负责监管计算机系统的构建</h1>
      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/2517.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h2 class="post-title" itemprop="name headline">
          
            <a href="/posts/2517.html" class="post-title-link" itemprop="url">MySQL创建高性能索引</a>
        </h2>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2018-09-06 00:00:00" itemprop="dateCreated datePublished" datetime="2018-09-06T00:00:00+08:00">2018-09-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/" itemprop="url" rel="index"><span itemprop="name">PHP</span></a>
                </span>
                  ，
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/PHP%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" itemprop="url" rel="index"><span itemprop="name">PHP基础知识</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/2517.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/2517.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>565</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>MySQL索引的基础和类型<br>索引的基础</p>
<ul>
<li>索引类似于书籍的目录,想要找到一本书的某个特定主题,需要先查找书的目录,定位对应页码</li>
<li>存储引擎使用类似的方法进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行</li>
</ul>
<p>索引对性能的影响</p>
<ul>
<li><p>优</p>
<ul>
<li>大大减少服务器需要扫描的数据量</li>
<li>帮助服务器避免排序和临时表</li>
<li>将随机I&#x2F;O变顺序I&#x2F;O</li>
<li>大大提升查询速度</li>
</ul>
</li>
<li><p>缺</p>
<ul>
<li>降低写的性能</li>
<li>占用磁盘空间</li>
</ul>
</li>
<li><p>索引的使用场景</p>
<ul>
<li>对于非常小的表,大部分情况下全表扫描的效率更高</li>
<li>中到大型表,索引非常有效</li>
<li>特大型表,建立和使用索引的代价随之增大,可以使用分区技术来解决</li>
</ul>
</li>
</ul>
<p>索引类型</p>
<ul>
<li><p>索引有很多类型,都是实现在存储引擎中</p>
<ul>
<li>普通索引:最基本的索引,没有任何约束限制</li>
<li>唯一索引:与普通索引类似,但是具有唯一性约束</li>
<li>主键索引:特殊的唯一索引,不允许有空值</li>
<li>组合索引:将多个列组合在一起创建索引,可以覆盖多个列</li>
<li>外键索引:只有Innodb类型的表才可以使用外键索引,保证数据的一致性,完整性和实现级联操作</li>
<li>全文索引:MySQL自带的全文索引只能用于MyISAM,并且只能对英文进行全文检索</li>
</ul>
</li>
<li><p>主键和唯一索引的区别</p>
<ul>
<li>一个表只能有一个主键索引,可以有多个唯一索引</li>
<li>主键索引一定是唯一索引,唯一索引不是主键索引</li>
<li>主键可以与外键构成参照完整性约束,防止数据不一致</li>
</ul>
</li>
</ul>
<p>延伸:MySQL索引的创建原则<br>延伸:MySQL索引的注意事项</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  


  
  <nav class="pagination">
    <a class="extend prev" rel="prev" href="/page/15/"><i class="fa fa-angle-left" aria-label="上一页"></i></a><a class="page-number" href="/">1</a><span class="space">&hellip;</span><a class="page-number" href="/page/15/">15</a><span class="page-number current">16</span><a class="page-number" href="/page/17/">17</a><a class="extend next" rel="next" href="/page/17/"><i class="fa fa-angle-right" aria-label="下一页"></i></a>
  </nav>



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">陈孟辉</p>
  <div class="site-description" itemprop="description">日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。</div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">170</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">45</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">60</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>


  <div class="links-of-blogroll motion-element">
    <div class="links-of-blogroll-title"><i class="fa fa-link fa-fw"></i>
      Links
    </div>
    <ul class="links-of-blogroll-list">
        <li class="links-of-blogroll-item">
          <a href="http://tool.oschina.net/uploads/apidocs/jquery/regexp.html" title="http:&#x2F;&#x2F;tool.oschina.net&#x2F;uploads&#x2F;apidocs&#x2F;jquery&#x2F;regexp.html" rel="noopener" target="_blank">正则表达式</a>
        </li>
        <li class="links-of-blogroll-item">
          <a href="https://www.cs.usfca.edu/~galles/visualization/Algorithms.html" title="https:&#x2F;&#x2F;www.cs.usfca.edu&#x2F;~galles&#x2F;visualization&#x2F;Algorithms.html" rel="noopener" target="_blank">算法图示</a>
        </li>
    </ul>
  </div>

      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2024</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">陈孟辉</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-chart-area"></i>
    </span>
    <span title="站点总字数">204k</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
    <span title="站点阅读时长">3:06</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Gemini</a> 强力驱动
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>

<script src="/js/utils.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  




  
<script src="/js/local-search.js"></script>













  

  


<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
  NexT.utils.getScript('//unpkg.com/valine/dist/Valine.min.js', () => {
    var GUEST = ['nick', 'mail', 'link'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(item => {
      return GUEST.includes(item);
    });
    new Valine({
      el         : '#valine-comments',
      verify     : true,
      notify     : true,
      appId      : '9jQqXQuURk2dvsv5oVh9D0VM-gzGzoHsz',
      appKey     : 'YfjrSNHQAtj63yeNmdmrLlLw',
      placeholder: "Just go go",
      avatar     : 'mm',
      meta       : guest,
      pageSize   : '10' || 10,
      visitor    : false,
      lang       : '' || 'zh-cn',
      path       : location.pathname,
      recordIP   : true,
      serverURLs : ''
    });
  }, window.Valine);
});
</script>

</body>
</html>
